package com.rgc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.support.JdbcDaoSupport;




import com.rgc.domain.Regla;

public class ReglaDaoImpl extends JdbcDaoSupport implements ReglaDao {

	public List<Regla> listRegla() {
		return listRegla(new String[]{},new String[]{});
	}

	public List<Regla> listRegla(String[] campo, String[] valor) {
		try {
			String sql = " SELECT * from regla  ";
			String conector=" where ";
			for (int i=0;i<campo.length;i++)  {
				 sql+=conector+""+campo[i]+"='"+valor[i]+"'";
				 conector=" and ";
						 
		    }
			sql+=conector+"  estado=1  "+" order by idregla";

			List<Regla> reglaFound =  getJdbcTemplate().query(
        			sql, new BeanPropertyRowMapper<Regla>(Regla.class));
         
			

        	return reglaFound;
        	
    } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
    }
	return new ArrayList<Regla>();
	}

	public Regla getRegla(String idregla) {
		List<Regla> listaRegla=listRegla(new String[]{"idregla"},new String[]{idregla});
		if(listaRegla.size()>0)
			return listaRegla.get(0);
		return null;
	}

	public boolean delRegla(String idregla) {
		try{
			String sql = "UPDATE regla set estado=0 where idregla='"+idregla+"' ";
			System.out.println("[["+sql+"]]");
		    getJdbcTemplate().update(sql);
			return true;
		}catch(Exception e){}
		return false;
	}
	

	public boolean modRegla(Regla regla) {
		try{
			String sql = "UPDATE regla set detalle='"+regla.getDetalle()+"' where idregla='"+regla.getIdregla()+"' ";
			System.out.println("[["+sql+"]]");
		    getJdbcTemplate().update(sql);
			return true;
		}catch(Exception e){}
		return false;
	}

	public boolean addRegla(final Regla regla) {
		try {
			
			final String sql = "INSERT INTO regla(nombre,detalle) values(?,?)";
			getJdbcTemplate().update(
					new PreparedStatementCreator()
			        {
			            public PreparedStatement createPreparedStatement(Connection conn) throws SQLException
			            {
			                PreparedStatement preparedStatement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			                preparedStatement.setString(1,regla.getNombre());
			                preparedStatement.setString(2,regla.getDetalle());
			                return preparedStatement;
			            }
			        }	
					);			
			   
                
                return true;
         
        } catch (Exception e) {
                System.out.println(e.getMessage());
                e.printStackTrace();
        }
		return false;
	}


}
